﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Logica;
using Logica.Modulos.ClasesLogica;
using Modelo;
using Modelo.Modulos.ClasesModelado;

namespace ProyectoFinal
{
    public partial class frmTarea : Form
    {  private string accion;
       private int idUsuario;
       private int idTarea;
       private int comboProyectosId;
       private int comboMiembroId;
       private int comboPrioridadId;
        public string Accion
        {
            get { return accion; }
            set { accion = value; }

        }
        public int IdUsuario
        {
            get { return idUsuario; }
            set { idUsuario = value; }

        }
        public int IdTarea
        {
            get { return idTarea; }
            set { idTarea = value; }

        }
        public class ComboBoxItem
        {

            public string Texto { get; set; }
            public object value { get; set; }

            public override string ToString()
            {
                return Texto;
            }
        }
        public frmTarea()
        {
            InitializeComponent();
        }

        private void btnDashBoard_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void frmTarea_Load(object sender, EventArgs e)
        {
            if (accion == "Ver")
            {
                txtTarea.ReadOnly = true;
                txtDescripcion.ReadOnly = true;
                cmbPrioridad.Enabled = false;
                cmbProyecto.Enabled = false;
                cmbResponsable.Enabled = false;
                dtpFin.Enabled = false;
                dtpInicio.Enabled = false;
                btnGuardar.Visible = false;
                CargarInfo();
        
                  

                
            }
            else
            {
                if (accion == "Agregar")
                {
                    CargarCombos();
                }
                else
                {
                    if (accion == "Editar")
                    {
                        dtpInicio.Enabled = false;
                        cmbProyecto.Enabled = false;
                        CargarInfo();
                        CargarCombos();
                    }
                    else
                    {
                        
                    }
                }
            }
        }
        public void CargarInfo()
        {
            TareasLog Logica = new TareasLog();
            TareasMod objMod = new TareasMod();
            objMod.IdTarea = idTarea;
            List<TareasMod> listaTareas = Logica.ConsultarTareaIdTarea(objMod);

            for (int i = 0; i < listaTareas.Count; i++)
            {

                 txtTarea.Text = listaTareas[i].NombreTarea;
                 txtDescripcion.Text = listaTareas[i].DescripcionTarea;
                 dtpInicio.Value = listaTareas[i].FechaInicio;
                 dtpFin.Value = listaTareas[i].FechaFin;

                 if (accion == "Editar")
                 {
                     comboProyectosId = listaTareas[i].IdProyecto;
                     comboPrioridadId = listaTareas[i].IdPrioridad;
                     comboMiembroId = listaTareas[i].IdUsuario;
                     CargarCombos();
                 }
                 else
                 {
                     ComboBoxItem itemProyecto = new ComboBoxItem();

                     itemProyecto.Texto = listaTareas[i].NombreProyecto;
                     itemProyecto.value = listaTareas[i].IdProyecto;
                     cmbProyecto.Items.Add(itemProyecto);
                     cmbProyecto.SelectedIndex = 0;

                     ComboBoxItem itemPrioridad = new ComboBoxItem();

                     itemPrioridad.Texto = listaTareas[i].NombrePrioridad;
                     itemPrioridad.value = listaTareas[i].IdPrioridad;
                     cmbPrioridad.Items.Add(itemPrioridad);
                     cmbPrioridad.SelectedIndex = 0;

                     ComboBoxItem itemMiembro = new ComboBoxItem();

                     itemMiembro.Texto = listaTareas[i].NombreCompleto;
                     itemMiembro.value = listaTareas[i].IdUsuario;
                     cmbResponsable.Items.Add(itemMiembro);
                     cmbResponsable.SelectedIndex = 0;
                 }
               
               

            }

        }
        public void CargarCombos()
         {
            ProyectoLog logica = new ProyectoLog();
            ProyectoMod objMod = new ProyectoMod();
            objMod.IdUsuario=idUsuario;
            List<ProyectoMod> listaProyectos= logica.ConsultarProyectoIdUsuario(objMod);


            for (int i = 0; i < listaProyectos.Count; i++)
            {
                ComboBoxItem item = new ComboBoxItem();

                item.Texto = listaProyectos[i].NombreProyecto;
                item.value = listaProyectos[i].IdProyecto;
                cmbProyecto.Items.Add(item);
                if ((accion == "Editar") && (listaProyectos[i].IdProyecto == comboProyectosId))
                {

                    cmbProyecto.SelectedIndex = i;


                }
                else
                {
                    cmbProyecto.SelectedIndex = 0;
                }
            
            }

            Prioridadeslog logicaPrio=new Prioridadeslog();
            List<PrioridadesMod> listaPrioridades = logicaPrio.Consultar();


            for (int i = 0; i < listaPrioridades.Count; i++)
            {
                ComboBoxItem item = new ComboBoxItem();

                item.Texto = listaPrioridades[i].Nombre;
                item.value = listaPrioridades[i].IdPrioridad;
                cmbPrioridad.Items.Add(item);
                if ( (accion == "Editar") && (listaPrioridades[i].IdPrioridad == comboPrioridadId))
                {

                    cmbPrioridad.SelectedIndex = i;


                }
                else
                {
                    cmbProyecto.SelectedIndex = 0;
                }
                
               

            }
            if (accion == "Editar")
            {
                objMod.IdProyecto = Convert.ToInt32((cmbProyecto.SelectedItem as ComboBoxItem).value);
                List<UsuarioMod> ListaMiembros = logica.ConsultarMiembro(objMod);


                for (int i = 0; i < ListaMiembros.Count; i++)
                {
                    ComboBoxItem item = new ComboBoxItem();

                    item.Texto = ListaMiembros[i].NombreCompleto;
                    item.value = ListaMiembros[i].IdUsuario;
                    cmbResponsable.Items.Add(item);

                    if ((accion == "Editar") && (ListaMiembros[i].IdUsuario == comboMiembroId))
                    {

                        cmbResponsable.SelectedIndex = i;


                    }
                    else
                    {
                        cmbProyecto.SelectedIndex = 0;
                    }
                

                }
            }
        }

        private void cmbResponsable_MouseClick(object sender, MouseEventArgs e)
        {
            cmbResponsable.Items.Clear();
            ProyectoMod objMod = new ProyectoMod();
            ProyectoLog logica = new ProyectoLog();
            objMod.IdProyecto = Convert.ToInt32((cmbProyecto.SelectedItem as ComboBoxItem).value);
            List<UsuarioMod> ListaMiembros = logica.ConsultarMiembro(objMod);


            for (int i = 0; i < ListaMiembros.Count; i++)
            {
                ComboBoxItem item = new ComboBoxItem();

                item.Texto = ListaMiembros[i].NombreCompleto;
                item.value = ListaMiembros[i].IdUsuario;
                cmbResponsable.Items.Add(item);

                if ((accion == "Editar") && (ListaMiembros[i].IdUsuario == comboMiembroId))
                {

                    cmbResponsable.SelectedIndex = i;


                }
                else
                {
                    cmbResponsable.SelectedIndex = -1;
                }

            }
        }

        private bool ValidacionesCampos()
        {DateTime fechaInicio = dtpInicio.Value;
           DateTime diaHoy = DateTime.Now.Date;
           DateTime fechaFin = dtpFin.Value;
           TimeSpan ts1 = fechaInicio - diaHoy;
           TimeSpan ts2 = fechaFin - fechaInicio;
           int diferenciaInicioH = ts1.Hours;
           int diferenciaFinH = ts2.Hours;
           int diferenciaInicioD = ts1.Days;
           int diferenciaFinD=ts2.Days;
           if (((diferenciaInicioH < 0) || (diferenciaInicioD < 0)) && (accion != "Editar"))
           {
               MessageBox.Show("La fecha es menor al dia de hoy", "Error del sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
               return false;
           }
           if ((diferenciaFinH < 0) || (diferenciaFinD<0)||(fechaInicio.Date==fechaFin.Date))
           {
               MessageBox.Show("La fecha es menor al o igual al inicio del proyecto", "Error del sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
               return false;
           }
           if ((txtTarea.Text == "") || (txtDescripcion.Text == ""))
           {
               MessageBox.Show("Campo vacio", "Error del sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
               return false;
           }
          


           return true; 
       }
        

        private void btnGuardar_Click(object sender, EventArgs e)
        {
    
            if (accion == "Agregar")
            {
                try
                {
                    if (ValidacionesCampos() == true)
                    {
                        TareasMod objMod = new TareasMod();
                        objMod.NombreTarea = txtTarea.Text;
                        objMod.IdProyecto = Convert.ToInt32((cmbProyecto.SelectedItem as ComboBoxItem).value);
                        objMod.DescripcionTarea = txtDescripcion.Text;
                        objMod.IdUsuario = Convert.ToInt32((cmbResponsable.SelectedItem as ComboBoxItem).value);
                        objMod.IdPrioridad = Convert.ToInt32((cmbPrioridad.SelectedItem as ComboBoxItem).value);
                        objMod.FechaInicio = dtpInicio.Value;
                        objMod.FechaFin = dtpFin.Value;
                        objMod.PorcentajeAvanceTarea = 0;


                        TareasLog Logica = new TareasLog();
                        Logica.InsertarTarea(objMod);

                        Close();
                    }

                }
                catch (Exception exc)
                {

                    MessageBox.Show(exc.Message, "Error de Sistema, MessageBoxButtons.OK, MessageBoxIcon.Error");
                }
            }
 

                if (accion == "Editar")
                {
                    try
                    {
                        if (ValidacionesCampos() == true)
                        {


                            TareasMod objMod = new TareasMod();
                           
                            objMod.IdTarea = idTarea;
                            objMod.NombreTarea = txtTarea.Text;
                            objMod.DescripcionTarea = txtDescripcion.Text;
                            objMod.IdProyecto = Convert.ToInt32((cmbProyecto.SelectedItem as ComboBoxItem).value);
                            objMod.IdPrioridad = Convert.ToInt32((cmbPrioridad.SelectedItem as ComboBoxItem).value);
                            objMod.IdUsuario = Convert.ToInt32((cmbResponsable.SelectedItem as ComboBoxItem).value);
                            objMod.FechaFin = dtpFin.Value;
                            objMod.FechaInicio = dtpInicio.Value;


                            TareasLog Logica = new TareasLog();
                            Logica.ActualizarTarea(objMod);

                            Close();


                        }



                    }
                    catch (Exception exc)
                    {

                        MessageBox.Show(exc.Message, "Error de Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }

        


        }

        
    
}
